﻿using ProyectoSalvadorDelMundo.Helpers;
using System;
using System.Configuration;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ProyectoSalvadorDelMundo.CatalogosGrupales.GruposServicios
{
    public partial class GruposServicios : PaginaBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                // Navegacion
                linkNav.NavigateUrl = ConfigurationManager.AppSettings.GetValues("linkNav-NavigateUrl")[0];
                linkNav.Text = ConfigurationManager.AppSettings.GetValues("linkNav-Text")[0];

                lblNavActiva.Text = ConfigurationManager.AppSettings.GetValues("lblNavActiva-Text")[0];
                lblNavActiva.CssClass = ConfigurationManager.AppSettings.GetValues("lblNavActiva-CssClass")[0];

                // Titulo
                lblTitulo.Text = ConfigurationManager.AppSettings.GetValues("lblTitulo-Text")[0];
                lblTitulo.CssClass = ConfigurationManager.AppSettings.GetValues("lblTitulo-CssClass")[0];

                // Agregar
                btnAgregar.Text = ConfigurationManager.AppSettings.GetValues("btnAgregar-Text")[0];
                btnAgregar.ToolTip = ConfigurationManager.AppSettings.GetValues("btnAgregar-ToolTip")[0];
                btnAgregar.CssClass = ConfigurationManager.AppSettings.GetValues("btnAgregar-CssClass")[0];

                // Buscar
                btnBuscar.ImageUrl = ConfigurationManager.AppSettings.GetValues("btnBuscar-ImageUrl")[0];
                btnBuscar.ToolTip = ConfigurationManager.AppSettings.GetValues("btnBuscar-ToolTip")[0];
                btnBuscar.AlternateText = ConfigurationManager.AppSettings.GetValues("btnBuscar-AlternateText")[0];
                btnBuscar.CssClass = ConfigurationManager.AppSettings.GetValues("btnBuscar-CssClass")[0];

                txtBuscar.Attributes.Add("placeholder", ConfigurationManager.AppSettings.GetValues("txtBuscar-placeholder")[0]);
                txtBuscar.CssClass = ConfigurationManager.AppSettings.GetValues("txtBuscar-CssClass")[0]; ;

                // Popup
                //-----------------
                lblAccion.Visible = false;
                lblAccion.Enabled = false;
                lblAccion.Text = string.Empty;

                pnlAgregarEditar.CssClass = "modal-dialog modal-lg";
                pnlAgregarEditar.Attributes.Add("Style", "display: none");


                // Popup Header
                btnPopX.Text = "X";
                btnPopX.CssClass = "close";
                //btnPopX.Attributes.Add("data-dismiss", "modal");


                lblPopupTitulo.CssClass = "modal-title";

                // Popup Contenido
                txtId.Enabled = false;

                lblNombre.Text = "Nombre";
                lblNombre.AssociatedControlID = "txtNombre";
                lblNombre.CssClass = "col-sm-2 control-label";

                txtNombre.Attributes.Add("placeholder", "Ingresar Nombre");
                txtNombre.CssClass = "form-control";

                lblPrioridad.Text = "Prioridad";
                lblPrioridad.AssociatedControlID = "txtPrioridad";
                lblPrioridad.CssClass = "col-sm-2 control-label";

                txtPrioridad.Attributes.Add("placeholder", "Ingresar la Prioridad");
                txtPrioridad.CssClass = "form-control";
                txtPrioridad.TextMode = TextBoxMode.Number;

                // Popup Footer
                btnPopCerrar.Text = "Cerrar";
                btnPopCerrar.CssClass = "btn btn-default";
                //btnPopCerrar.Attributes.Add("data-dismiss", "modal");

                btnPopGuardar.Text = "Guardar Cambios";

                btnPopGuardar.OnClientClick = "Guardar";

                this.Session["Grupo"] = "18";
                // Cargar datos.
                this.Page.Form.DefaultButton = btnBuscar.ID;
                this.Page.Form.DefaultFocus = txtBuscar.ID;
                if (RefrescarAsambleas())
                {
                    linkIrMinisterios.Text = "";
                    linkIrMinisterios.Enabled = false;
                    ddl.SelectedIndex = 0;
                    RefrescarDatos(Convert.ToInt64(ddl.SelectedValue));
                }
                else
                {
                    linkIrMinisterios.Text = "Agrear Asambleas";
                    linkIrMinisterios.Enabled = true;
                    btnAgregar.Enabled = false;
                    btnBuscar.Enabled = false;
                }

            }
        }

        protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
        {
            RefrescarDatos(Convert.ToInt64(ddl.SelectedValue));
        }


        private DataTable Listar(long p_lID)
        {
            var oCn_GruposServicios = new CN.GruposServicios();
            if (txtBuscar.Text != string.Empty)
            {
                return oCn_GruposServicios.ListarPorBus(txtBuscar.Text, Convert.ToInt64(this.Session["Grupo"]), p_lID);
            }
            else
            {
                return oCn_GruposServicios.Listar(Convert.ToInt64(this.Session["Grupo"]), p_lID);
            }
        }

        private DataTable ListarAsambleas()
        {
            var oCn_Asambleas = new CN.Asambleas();
            return oCn_Asambleas.Listar(Convert.ToInt64(this.Session["Grupo"]));
        }

        private void RefrescarDatos(long p_lID)
        {
            lsvLista.DataSource = Listar(p_lID);
            lsvLista.DataBind();
        }

        private Boolean RefrescarAsambleas()
        {
            var ListaAsambleas = ListarAsambleas();
            ddl.DataSource = ListaAsambleas;
            ddl.DataTextField = "NOMBRE";
            ddl.DataValueField = "ID_ASAMBLEA";
            ddl.DataBind();
            return ListaAsambleas.Rows.Count > 0 ? true : false;
        }

        protected void OnPagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
        {
            (lsvLista.FindControl("DataPager1") as DataPager).SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
            RefrescarDatos(Convert.ToInt64(ddl.SelectedValue));
        }

        protected void Agregar(object sender, EventArgs e)
        {
            txtNombre.Text = string.Empty;
            txtPrioridad.Text = string.Empty;
            txtNombre.Enabled = true;
            txtPrioridad.Enabled = true;
            lblAccion.Text = "Agregar";
            lblPopupTitulo.Text = "Agregar Grupo de Servicios";
            btnPopGuardar.Text = "Agregar";
            btnPopGuardar.CssClass = "btn btn-primary";
            txtNombre.Focus();
            popup.Show();
        }

        protected void Editar(object sender, EventArgs e)
        {
            ListViewDataItem item = (ListViewDataItem)(sender as Control).NamingContainer;
            Label lblID = (Label)item.FindControl("ID");
            Label lblNombre = (Label)item.FindControl("NOMBRE");
            Label lblPrioridad = (Label)item.FindControl("PRIORIDAD");
            txtId.Text = lblID.Text;
            txtNombre.Text = lblNombre.Text;
            txtPrioridad.Text = lblPrioridad.Text;

            txtPrioridad.Enabled = true;
            txtNombre.Enabled = true;
            lblAccion.Text = "Editar";
            lblPopupTitulo.Text = "Editar Grupo de Servicios";
            btnPopGuardar.Text = "Guardar Cambios";
            btnPopGuardar.CssClass = "btn btn-primary";
            txtNombre.Focus();
            popup.Show();
        }
        protected void Eliminar(object sender, EventArgs e)
        {
            ListViewDataItem item = (ListViewDataItem)(sender as Control).NamingContainer;
            Label lblID = (Label)item.FindControl("ID");
            Label lblNombre = (Label)item.FindControl("NOMBRE");
            Label lblPrioridad = (Label)item.FindControl("PRIORIDAD");
            txtId.Text = lblID.Text;
            txtNombre.Text = lblNombre.Text;
            txtPrioridad.Text = lblPrioridad.Text;
            txtPrioridad.Enabled = true;
            txtNombre.Enabled = false;
            lblAccion.Text = "Eliminar";
            lblPopupTitulo.Text = "Eliminar Grupo de Servicios";
            btnPopGuardar.Text = "Eliminar";
            btnPopGuardar.CssClass = "btn btn-danger";
            popup.Show();
        }

        protected void Guardar(object sender, EventArgs e)
        {
            int Numero;
            if ( int.TryParse(txtPrioridad.Text,out Numero))
            {
                var oCn_GruposServicios = new CN.GruposServicios();
                var oCe_GruposServicios = new CE.GruposServicios();
                var strResultado = string.Empty;

                oCe_GruposServicios.NOMBRE = txtNombre.Text;
                oCe_GruposServicios.PRIORIDAD = txtPrioridad.Text == string.Empty ? -1 : Numero;
                oCe_GruposServicios.ID_GRUPO_SERVICIO = lblAccion.Text == "Agregar" ? -1 : Convert.ToInt64(txtId.Text);
                oCe_GruposServicios.ID_GRUPO = Convert.ToInt64(this.Session["Grupo"]);
                oCe_GruposServicios.ID_ASAMBLEA = Convert.ToInt64(ddl.SelectedValue);
                if (lblAccion.Text == "Eliminar")
                {
                    strResultado = oCn_GruposServicios.Eliminar(oCe_GruposServicios, "Prueba");

                    DataPager pgr = lsvLista.FindControl("DataPager1") as DataPager;
                    if (pgr != null && lsvLista.Items.Count != pgr.TotalRowCount)
                    {
                        pgr.SetPageProperties(0, pgr.MaximumRows, false);
                    }
                }
                else
                {
                    if (CN.Helpers.EjecutarConsultaText("SELECT prioridad FROM `sistema-sas`.grupos_servicios WHERE id_grupo = " + Convert.ToString(this.Session["Grupo"]) + " AND id_asamblea = " + ddl.SelectedValue + " AND prioridad = " + txtPrioridad.Text + " ;").Rows.Count == 0)
                    {

                        oCe_GruposServicios.IsNew = lblAccion.Text == "Editar" ? false : true;
                        strResultado = oCn_GruposServicios.GuardarCambios(oCe_GruposServicios, "Prueba");
                        popup.Hide();
                    }
                    else
                    {
                        MostarError("La prioridad ingresada ya esxiste en el sistema.");
                        popup.Show();
                    }

                }

                if (strResultado == "Cambios aplicados con exito.")
                {
                    MostarExito(strResultado);
                }
                else if (strResultado == "El registro no se puede borrar por que tiene reistros relacionados.")
                {
                    MostarInfo(strResultado);
                }
                else
                {
                    MostarError("Ocurrio un error inesperado al guardar los cambios.");
                }
                RefrescarDatos(Convert.ToInt64(ddl.SelectedValue));
            }
            {
                MostarError("La PRIORIDAD contiene un valor invalido.");
            }
        }

        protected void Buscar(object sender, EventArgs e)
        {
            RefrescarDatos(Convert.ToInt64(ddl.SelectedValue));

        }

        protected void CerrarPop(object sender, EventArgs e)
        {
            popup.Hide();
        }
    }
}